import axios from "axios";
import router from "../router"
import elementUI from "element-ui"
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
let http = axios.create({
    baseURL:"/api",// 配置默认的地址
    withCredentials:"true", // 将会默认携带认证给后端
    timeout:1000*10,// 设置请求超时时间，超过十秒就会进入reject
})
// 请求拦截器
http.interceptors.request.use(function(config){ // 请求拦截器可以拦截所有的请求添加我们需要的逻辑层
    NProgress.start() // 进度条展示
    // 请求数据的时候需要携带token
    // 但是 登入 获取验证码 校验验证码不需要token
    let rowPaths = ["/users/login","/users/getCaptcha","/users/verifyCaptcha"] //这些请求不需要携带token
    if(rowPaths.includes(config.url)){
        return config // 放行
    }else{
        let token = localStorage.getItem("qf-token") || ""
        config.headers["authorization"]=token
        return config // 放行
    }
})

// 响应拦截器
http.interceptors.response.use(function(config){
    NProgress.done() // 进度条消失
    // 响应拦截
    // 当状态码是10022或者1004时 跳转到登录页 清除token
    if(config.data.code==="10022" || config.data.code==="1004"){
        router.push("/login")
        location.reload()
        localStorage.removeItem("qf-token")
        // 提示用户登陆过期
        elementUI.Message.error("登录过期，请重新登录")
    }
    return config // 放行
})

export default http